From e22073dc975c7b2c5f97d20da6b1fff1a2e0f114 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Sat, 25 May 2019 09:03:37 +0200 Subject: [PATCH] sizerequest: Fix request mode for layout managers We can't just call GtkWidgetClass::get_request_mode() anymore. If the widget has a layout manager, we need to ask that one. --- gtk/gtksizerequest.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c index 5330a59a1f..6d84487495 100644 --- a/gtk/gtksizerequest.c +++ b/gtk/gtksizerequest.c @@ -71,6 +71,17 @@ pop_recursion_check (GtkWidget *widget, #define pop_recursion_check(widget, orientation) #endif /* G_ENABLE_CONSISTENCY_CHECKS */ +static GtkSizeRequestMode +fetch_request_mode (GtkWidget *widget) +{ + GtkLayoutManager *layout_manager = gtk_widget_get_layout_manager (widget); + + if (layout_manager != NULL) + return gtk_layout_manager_get_request_mode (layout_manager); + else + return GTK_WIDGET_GET_CLASS (widget)->get_request_mode (widget); +} + static gint get_number (GtkCssStyle *style, guint property) @@ -146,7 +157,7 @@ gtk_widget_query_size_for_orientation (GtkWidget *widget, cache = _gtk_widget_peek_request_cache (widget); if (G_UNLIKELY (!cache->request_mode_valid)) { - cache->request_mode = GTK_WIDGET_GET_CLASS (widget)->get_request_mode (widget); + cache->request_mode = fetch_request_mode (widget); cache->request_mode_valid = TRUE; } @@ -562,13 +573,7 @@ gtk_widget_get_request_mode (GtkWidget *widget) if (G_UNLIKELY (!cache->request_mode_valid)) { - GtkLayoutManager *layout_manager = gtk_widget_get_layout_manager (widget); - - if (layout_manager != NULL) - cache->request_mode = gtk_layout_manager_get_request_mode (layout_manager); - else - cache->request_mode = GTK_WIDGET_GET_CLASS (widget)->get_request_mode (widget); - + cache->request_mode = fetch_request_mode (widget); cache->request_mode_valid = TRUE; } -- 2.30.2